-- FUNCTION: cliente.cot_getarchivoremito(integer)

-- DROP FUNCTION cliente.cot_getarchivoremito(integer);

CREATE OR REPLACE FUNCTION subsistemas.web_jsonaenviar(
	funcion character varying,
	pidcomm integer,
	pcodemp character varying)
    RETURNS character varying
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
  vCuit 	varchar;
  vToken 	varchar;
  vFecha 	Timestamp;
  vNroPtoVta		integer;
  vNro 				integer;
  vCadenaProductos 	varchar;
  
  cCursorArtm   refcursor;
  
  vCodArt			varchar;
  vPresentacion		numeric;
  vCant				numeric;
  vSigno			integer;
  vvSigno			integer;
  
  vRespuesta varchar;
  
  vComillas     varchar;
BEGIN
  vComillas := chr(34);
  
  -- Las comillas no se pueden usar en scripts porque ODBC las elimina
  
  -- Json a enviar al ministerio.
 vRespuesta := '';
 
 IF funcion = 'ARemito' THEN
 	SELECT PAD.CUIT, COMM.FECHA, COMM.NROPTOVTA, COMM.NRO INTO
        vCuit, vFecha, vNroPtoVta, vNro
 	FROM PAD
 	INNER JOIN COMM ON COMM.IDPAD = PAD.ID
 	WHERE COMM.ID = pIdComm;
 
	vToken := cliente.TokenARemito(pCodEmp);
  
 	OPEN cCursorArtm FOR 
	  SELECT codArtLote, coalesce(presentacionLote,1), coalesce(cant,1), signo
 	  FROM ARTM 
	  WHERE ARTM.IdComm = pIdComm AND NroLote is not null AND COALESCE(codArtLote,'') <> '';
 

 	FETCH cCursorArtm INTO vCodArt, vPresentacion, vCant, vSigno;
	vvSigno := vSigno; 
 
 	vCadenaProductos := '';
 
 	LOOP
    	IF NOT FOUND THEN EXIT; END IF;
			vCadenaProductos := vCadenaProductos || 
	             	'{@@@nro_registro@@@:@@@' || vCodArt || '@@@,' ||
			'@@@cantidad@@@:' 	|| cast(cast(vCant / vPresentacion as integer) as varchar) || ',' ||
			'@@@contenido@@@:' || cast(vPresentacion as varchar) || '},';
		FETCH cCursorArtm INTO vCodArt, vPresentacion, vCant, vSigno;
 	END LOOP;
 
 	IF vCadenaProductos <> '' THEN
    	vCadenaProductos := substring(vCadenaProductos, 1, length(vCadenaProductos) - 1); -- Le saco la coma.
		vRespuesta := 
		'{@@@token@@@:@@@' || vToken || '@@@,' ||
     	 '@@@devolucion@@@:' || CASE WHEN vvSigno = -1 THEN '0' ELSE '1' END || ',' || -- me quedo con el ÃÂÃÂºltimo signo
	 	 '@@@nro_aremito@@@:@@@'  || trim(to_char(coalesce(vNroPtoVta,0), '00000')) || trim(to_char(coalesce(vNro,0), '0000000000')) || '@@@,' ||
	 	 '@@@cuit_destino@@@:@@@'  || replace(coalesce(vCuit,''), '-','') || '@@@,' ||
	 	 '@@@fecha_emision@@@:@@@' || to_char(coalesce(vFecha,'20000101'), 'YYYY-MM-DD') || '@@@,' ||
	 	 '@@@productos@@@:[' || vCadenaProductos || ']}';
 	ELSE
		vRespuesta := '*' || funcion || '*' || cast(pIdComm as varchar) || '*' || pcodemp || '*';
	END IF;
 END IF; 

 RETURN replace(vRespuesta,'@@@',vComillas);
 

 
END;
$BODY$;

ALTER FUNCTION subsistemas.web_jsonaenviar(character varying, integer, character varying)
    OWNER TO abacouser;
--
SELECT aaVersion('508.00', '507.01');
--



